
#ifndef IHashCodeProvider_h
#define IHashCodeProvider_h

// Riccsson includes.
#include <Typedef.h>
#include <Defines.h>
#include <CSharpPropertyMethods.h>

#include <System/Object.h>
#include <System/ArgumentNullException.h>

namespace Riccsson
{
	namespace System
	{
		namespace Collections
		{
			interface IHashCodeProvider
			{
				// Summary:
				//     Returns a hash code for the specified object.
				//
				// Parameters:
				//   obj:
				//     The System.Object for which a hash code is to be returned.
				//
				// Returns:
				//     A hash code for the specified object.
				//
				// Exceptions:
				//   System.ArgumentNullException:
				//     The type of obj is a reference type and obj is null.
				public: virtual int GetHashCode(object* obj) = 0;
			};
		}
	}
}

#endif